package com.smart.manager.system.entities.body;

import com.smart.common.entities.core.BaseSearch;
import com.smart.manager.system.entities.enums.InstallState;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;


/**
 *
 * @author xiaxuqiu
 * @date 2023/03/26
 */
public class RSystemModule {

    @Data
    @EqualsAndHashCode(callSuper = true)
    @ApiModel("RSystemModel1")
    public static class SearchBody extends BaseSearch {


        @ApiModelProperty("模块代码")
        private String code;


        @ApiModelProperty("模块名称")
        private String name;


        @ApiModelProperty("模块状态")
        private InstallState state;
    }


    @Data
    @ApiModel("RSystemModel2")
    public static class EditBody  implements Serializable {


        /**
         * 模块代码
         */
        @ApiModelProperty("模块代码")
        @Length(max= 30,message="模块代码 不能超过30个字符")
        @NotBlank(message = " 模块代码  不能为空")
        private String code;

        @ApiModelProperty("模块名称")
        @Length(max= 10,message="模块代码 不能超过10个字符")
        @NotBlank(message = " 模块代码  不能为空")
        private String name;


        @ApiModelProperty("模块所属包")
        @Length(max= 100,message="模块所属包 不能超过30个字符")
        @NotBlank(message = " 模块所属包  不能为空")
        private String pkgName;


        @ApiModelProperty("模块描述")
        @Length(max= 500,message="编码长度不能超过500")
        private String description;


        @ApiModelProperty("发布版本号")
        @Length(max= 30,message="发布版本号 不能超过30个字符")
        private String releaseVersion;


        @ApiModelProperty("显示排序")
        @NotNull(message = " 显示排序 不能为空")
        @Max(value = 9999 ,message = "显示排序值 不能超过9999")
        private Integer sort;


        @ApiModelProperty("是否存在前端页面")
        @NotNull(message = " 是否存在前端页面  不能为空")
        private Boolean hasWeb;



        @ApiModelProperty("模块图标")
        @Length(max= 50,message="模块图标 不能超过50个字符")
        @NotBlank(message = " 模块图标  不能为空")
        private String icon;


        @ApiModelProperty("安装状态 枚举类型")
        @NotNull(message = " 安装状态  不能为空")
        private InstallState state;

    }


}
